package cn.com.yang.server.jetty;

import java.io.File;
import java.lang.management.ManagementFactory;

import org.eclipse.jetty.jmx.MBeanContainer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

/**
 * 类似于Tomcat的war包部署
 * TODO
 * @author yangyijin
 * @since 2023年5月19日-上午9:54:46
 */
public class JettyWebApp {
	public static void main(String[] args) throws Exception {
		Server server = new Server(8080);
		//配置JMX
		MBeanContainer mbContainer = 
				new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
		server.addBean(mbContainer);
		// WebAppContext 是一个控制web应用生存环境的实体
		// 在这个例子中 context path设置为“/”,因此它能够处理root上下文请求，然后我们能看到它设置的war包路径。
		// 还有许多其他配置，重支持webapp注解扫描，到选择webapp的解压位置
		WebAppContext webapp = new WebAppContext();
		webapp.setContextPath("/");
		File warFile = new File("../../test/test-jmx/jmx-webapp/target/jmx-webapp");
		webapp.setWar(warFile.getAbsolutePath());
		// WebAppContext 是一个ServletContextHandler，需要设置给server
		server.setHandler(webapp);
		// 启动服务
		server.start();
		server.dumpStdErr();
		server.join();
	}
}
